package Multithreading.ThreadPool;

/**
 * ClassName:ThreadPool001
 * Package:Multithreading.ThreadPool
 * Description:
 *
 * @Author:ZhangXin
 * @Create:2023/3/7-16:43
 * @Version:v1.0
 */
public class ThreadPool001 {
    /*以前多线程的弊端
    * 1.用到线程的时候就创建
    * 2.用完之后线程消失
    *
    * 线程池主要核心原理
    * 1.创建一个池子,池子是空的
    * 2.提交任务时,池子会创建新的线程对象,任务执行完毕,线程归给池子
    *   下回再次提交任务时,不需要创建新的线程,直接复用已有的线程即可
    * 3.但是如果提交任务时,池子中没有空闲线程,也无法创建新的线程,任务就会排队等待
    *
    *
    * 线程池代码实现
    * 1.创建线程池
    * 2.提交任务
    * 3.所有任务全部执行完毕,关闭线程池
    *
    * Executors:线程池的工具类通过调用方法返回不同类型的线程池对象
    *
    * public static ExecutorService newCachedThreadPool() 创建一个没有上限的线程池
    * public static ExecutorService newFixedThreadPool(int nThreads) 创建有上限的线程池*/
}
